import axios from 'axios'
// 导入路由文件
import router from '../router'
// 导入提示插件

// 导入qs插件 参数序列化 反向序列化
// Qs.stringify   Qs.parse()
import Qs from 'qs'
// url 请求路径
// method 请求方式
// params 发送的数据
// headType  三个参数 form   json  mul 

// config.headers['Authorization'] = 'Bearer ' + "token" // 让每个请求携带自定义token 请根据实际情况自行修改


// axios.defaults.属性=属性值   axios全局配置
axios.defaults.withCredentials = true; //false  不跨域  true 跨域
// 配置请求基本路径
// axios.defaults.baseURL = "/"
// axios.defaults.timeout = "3000"
// 携带请token到请求头
// axios.defaults.headers.common["token"] = localStorage.getItem("token"); //设置请求头，这个是不是必须的
var service = axios.create({
    baseURL: "/ts"
})
export default function(url, method = "get", params, headType = "json") {
    let data = {};

    if (method == "post") {
        if (headType == "form") {
            service.defaults.headers.post["Content-Type"] =
                "application/x-www-form-urlencoded";
            data = Qs.stringify(params); //{name:1,age:2} =--->  name=1&age=2
        } else if (headType == "mul") {
            service.defaults.headers.post["Content-Type"] = "multipart/form-data";
            data = params;
        } else {
            service.defaults.headers.post["Content-Type"] = "application/json;charset=UTF-8"
            data = params;
        }
    }
    // get方式 并且需要的数据部是json类型
    if (method == "get") {
        // 设置请求头
        if (headType != "json") {
            service.defaults.headers["Content-Type"] =
                "application/x-www-form-urlencoded;charset=UTF-8";
        }
        // get请求把参数拼接到 地址栏
        data = Qs.stringify(params);
        url += "?" + data
    }
    // 请求拦截器
    service.interceptors.request.use(config => {
            // if (localStorage.token) { //如果有token token携带带请求头
            //     config.headers['Authorization'] = 'Bearer ' + localStorage.token // 让每个请求携带自定义token 请根据实际情况自行修改
            // }
            if (config.url == "/buy") {
                if (!localStorage.token) {
                    router.push("/login")
                }
            }
            return config
        })
        // 响应拦截器
    service.interceptors.response.use(response => {
        // if (response.token) { //拦截到返回的数据中有token
        //     localStorage.setItem("token", response.token)
        // }
        console.log(response)
            // if (response.data.code == 0) {
            //     alert(response.data.success)
            // }
            // if (response.data.code == 700) {
            //     alert("暂无数据")
            // }
            // if (response.status > 400) {
            //     alert("发生了一些预期之外的错误");
            // }
        return response
    })
    return new Promise((resolve, reject) => {
        service({
            url,
            method,
            data: data
        }).then(res => {
            resolve(res)
        }).catch(err => {
            reject(err)
        })
    })
}